package mundo;

import java.util.ArrayList;

import nodos.Nodo;

public class Compilador {

	private AnalizadorLexico analizadorLexico;

	private AnalizadorSintactico analizadorSintactico;

	private ArrayList<SimboloLexico> simbolosLexicos;

	private Nodo raiz;

	private ArrayList<SimboloLexico> erroresLexicos;

	private ArrayList<ErrorSintactico> erroresSintacticos;


	public Compilador() {
		analizadorLexico=new AnalizadorLexico();
		analizadorSintactico=new AnalizadorSintactico();
	}

	public boolean compilar(String codFuente) {
		boolean pasaLexico = analizadorLexico.analizar(codFuente);
		simbolosLexicos=analizadorLexico.getTablaTokens();
		erroresLexicos=analizadorLexico.getTablaErrores();
		if(pasaLexico){
			boolean pasaSintactico = analizadorSintactico.analizar(simbolosLexicos);
			raiz=analizadorSintactico.getRaiz();
			erroresSintacticos=analizadorSintactico.getErroresSintacticos();
			if(pasaSintactico){
				return true;
			}
		}
		return false;
	}

	public ArrayList<SimboloLexico> getErroresLexicos() {
		return erroresLexicos;
	}

	public ArrayList<ErrorSintactico> getErroresSintacticos() {
		return erroresSintacticos;
	}

	public Nodo getRaiz() {
		return raiz;
	}

	public ArrayList<SimboloLexico> getSimbolosLexicos() {
		return simbolosLexicos;
	}

}
